#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QMenuBar>
#include<QTextEdit>
#include<QFileDialog>
#include<QDebug>
#include<fstream>
#include<QTextStream>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //设置标题
    this->setWindowTitle("这是我的记事本");
    //设置菜单栏
    QMenuBar*menuBar=new QMenuBar(this);
    this->setMenuBar(menuBar);
    //设置菜单
    QMenu*menu1=new QMenu("文件",this);
    QMenu*menu2=new QMenu("编辑",this);
    QMenu*menu3=new QMenu("构建",this);
    menuBar->addMenu(menu1);
    menuBar->addMenu(menu2);
    menuBar->addMenu(menu3);
    //设置菜单项
    QAction*act1=new QAction("open",this);
    QAction*act2=new QAction("close",this);
    QAction*act3=new QAction("save",this);
    menu1->addAction(act1);
    menu1->addSeparator();
    menu1->addAction(act2);
    menu1->addSeparator();
    menu1->addAction(act3);
    //创建中央控件
    edit=new QTextEdit(this);
    this->setCentralWidget(edit);
    edit->setPlaceholderText("请在这区域内进行编写哦~");
    //给act添加一些动作
    connect(act1,&QAction::triggered,this,&MainWindow::open);
    connect(act3,&QAction::triggered,this,&MainWindow::save);


}

MainWindow::~MainWindow()
{
    delete ui;
}

//使用QFileDialog实现选择文件的效果
//getSaveFileName用于保存文件的场景，此时对话框可以输入文件名
//getOpenFileName,打开文件的场景
void MainWindow::save()
{
//    //弹出对话框，输入文件名路径
//    QFileDialog*dialog=new QFileDialog(this);
//    QString fileName=dialog->getSaveFileName(this,"保存文件","E:\\code_commit\\qt");
//    qDebug()<<fileName;
//    //写入文件
//    std::ofstream file(fileName.toStdString().c_str());
//    if(!file.is_open())
//    {
//        qDebug()<<"文件保存失败";
//        return;
//    }
//    const QString&text=edit->toPlainText();
//    file<<text.toStdString();
//    file.close();
    //弹出对话框，输入文件名
    QFileDialog*dialog=new QFileDialog(this);
    QString filename=dialog->getSaveFileName(this,"保存文件","E:\\code_commit\\qt");
    qDebug()<<filename;
    //写入文件
    std::ofstream file(filename.toStdString().c_str());
    if(!file.is_open())
    {
        qDebug()<<"保存失败";
        return;
    }
    const QString text=edit->toPlainText();
    file<<text.toStdString().c_str();
    file.close();


}

void MainWindow::open()
{
//    QFileDialog*dialog=new QFileDialog(this);
//    QString filename=dialog->getOpenFileName(this,"加载文件","E:\\code_commit\\qt");
//    qDebug()<<filename;
//    //读取文件
//    std::ifstream file(filename.toStdString().c_str());
//    if(!file.is_open())
//    {
//        qDebug()<<"读取失败";
//        return;
//    }
//    std::string content;
//    std::string line;
//    while(std::getline(file,line))
//    {
//        content+=line;
//        content+='\n';
////        line+='\n';
////         edit->setText(content.c_str());
//    }

//    file.close();
////    显示到界面上
//    QString text=QString::fromStdString(content);
//    edit->setPlainText(text);
    QString filename=QFileDialog::getOpenFileName(this,"加载文件");
    if(filename.isEmpty())
    {
        return;
    }
    qDebug()<<filename;
    QFile file(filename);
    if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
    {
        qDebug()<<"读取失败"<<file.errorString();
        return;
    }
    QTextStream in(&file);
    QString content=in.readAll();
    edit->setPlainText(content);
    file.close();


}

